\documentclass{beamer}
\usepackage[utf8x]{inputenc}
\usepackage{default}
\usepackage{verbatim}
\usepackage[all]{xy}
\newcommand{\Ardrone}{Ar Drone$^{\copyright}$ }

\title{MASSY}
\subtitle{Multi-Agent Systems and Scotland Yard}
\author{Chiel Kooijman \and Maarten de Waard}
\institute{UvA}
\usetheme{Warsaw}
\begin{document}
\begin{frame}
\titlepage
\end{frame}

\begin{frame}
\frametitle{Logboek}
\begin{quote}
\small
It is April 4th today. I am sitting in my office, reading a paper. There is a
soothing sound, coming from my fireplace. It's raining outside. 

A young tall blonde walks in. She was smoking one of those slim cigarettes, but
she is soaking wet, so it has gone out. She walks to me and takes off her sunglasses. 
I can see she has been crying. ``My wallet was stolen today. Please help me.'' Still, 
she stays perfectly calm. I take my cigar out of my mouth, and ask her
what the man looks like. She tells me his name is 'Mr. X.' and he wears a cap,
with an X. on it.

Fortunately, 2 turns ago, i had an anonymous tip about some Mr. X. showing up in
the neighbourhood of the Tower Bridge, around node 119. 

I tell the woman I will put my best programmers team on the job, and that she
can expect we will find the man within 24 turns.
\end{quote}
\end{frame}

\begin{frame}
\tableofcontents
\end{frame}

\section{Introduction}
\subsection{Speluitleg}
% spel uitleggen
\begin{frame}
\frametitle{Speluitleg  \small (Bewegen)}
\begin{itemize}
    \item 200 Nodes
    \item 4 soorten transport:
    \begin{itemize}
        \item Taxi
        \item Bus
        \item Metro
        \item Boot (alleen voor Mr. X.)
    \end{itemize}
    \item Beperkt aantal tickets
\end{itemize}
% Plaatje van een stukje map
\end{frame}

\begin{frame}
\frametitle{Speluitleg \small (Doel)}
\begin{itemize}
    \item 5 Detectives
    \item 1 Mr. X.
    \item Positie Mr. X. onbekend
    \item 24 beurten om hem te vangen
    \item 5 beurten waarin Mr. X. zijn positie vrijgeeft
    \item Mr. X. heeft ``Black Tickets'', ``2x Tickets''
\end{itemize}
\end{frame}

\section{Implementation}
% Global representation
\subsection{Global representation}
\begin{frame}
\frametitle{Global representation}
\centering
\xymatrix{  & ScotlandYard \ar@/^/[ddl] \ar[d] \\
& Map \ar@/_/[dr] \\
GUI \ar@/^/[uur] \ar@/_/[ur] & Nodes \ar[u] & Agenten \ar@/_/[ul]\\
& & Detectives \ar[u] & Mr X \ar[ul] \\
}
\end{frame}

\subsection{Datastructuren en Optimalisatie}
\begin{frame}
\frametitle{Datastructuren en Optimalisaties}
\begin{itemize}
    \item Spel wordt aangestuurd vanuit aparte Threads in GUI\\
    Hierdoor is Polling niet nodig
    \item Map opgebouwd uit aparte Node-objecten
    \item Map representatie in text file
    \item Node connecties worden op 2 manieren gerepresenteerd:
    \begin{itemize}
        \item IdentityHashMap, die een Node naar een TreeSet van connectietypes mapt.\\
        Hierdoor kunnen we in $O(\log n)$ checken of een connectie bestaat.
        \item 4 LinkedLists voor alle soorten connecties, om snel door elk type te kunnen itereren.
        \item In de node is ook opgeslagen waar hij staat in de map.
    \end{itemize}
\end{itemize}
\end{frame}
\subsection{Agents en AI}
\begin{frame}
\frametitle{Agents}

\begin{block}{Agents}
\begin{itemize}
\small    \item Abstracte klasse
    \item Zowel Detectives als Mr. X. zijn ``agents''
    \item Mr. X. heeft zijn AI in zijn eigen klasse.
\end{itemize}
\end{block}
\begin{block}{AI}
\begin{itemize}
    \item Rekent voor alle knopen waar hij naartoe kan een waarde uit
    \item Waarde hangt af van:
    \begin{itemize}
        \item Of er een detective binnen 3 nodes is
        \item Hoeveel typen transport er zijn
        \item Hoeveel connecties hij heeft
        \item Hoeveel tickets hij heeft om naar de buurknoop te reizen.
    \end{itemize}
\small    \item Formule: $Value = d \times types \times connecties \times tickets$ \\
    Waarbij d = een waarde toegekend aan of er een detective in de buurt is.
\end{itemize}
\end{block}
\end{frame}

\subsection{GUI en ScotlandYard}
\begin{frame}
\frametitle{GUI en ScotlandYard}
\begin{block}{GUI}
\begin{itemize}
    \item Diverse listeners voor mouse- en keyboard interface.
    \item Slepen met de muis verplaatst de map
    \item Klikken selecteert een Agent of Node, a.d.h.v. positie en of er al een is geselecteerd.
    \item Manier van vervoer wordt gevraagd in aparte dialog 
\end{itemize}
\end{block}

\begin{block}{ScotlandYard}
    Na kiezen van agent, node en vervoer wordt een move in ScotlandYard aangeroepen.\\
    Dit zorgt ervoor dat de ``game-loop'' verder gaat
\end{block}
\end{frame}


\section{Results}
\subsection{Demo}
\begin{frame}
\frametitle{Demo}
Time to look at a beautiful demo
\end{frame}

\section{Discussion}
\subsection{Discussion}
\begin{frame}
\frametitle{Discussion}
\begin{itemize}
    \item AI heeft wat verbeterpuntjes
    \item A* kon niet worden gebruikt, geen goede heuristiek
    \item Dijkstra kan wel
    \item Speciale tickets van Mr. X. moeten nog worden toegevoegd
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Questions}
Any Questions?
\end{frame}

\end{document}
